From: Stefano Stabellini Date: Fri, 13 Nov 2020 02:30:33 +0000 (-0800) Subject: automation: add a QEMU aarch64 smoke test X-Git-Tag: archive/raspbian/4.16.0+51-g0941d6cb-1+rpi1~2^2~42^2~1259 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=dbc1e724bbcddf5de7a591ba7eb5a765a72de951;p=xen.git automation: add a QEMU aarch64 smoke test Use QEMU to start Xen (just the hypervisor) up until it stops because there is no dom0 kernel to boot. It is based on the existing build job unstable-arm64v8. Also use make -j$(nproc) to build Xen. Signed-off-by: Stefano Stabellini Acked-by: Wei Liu --- diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 793feafe8b..35346e3f6e 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -22,6 +22,28 @@ build-each-commit-gcc: - /^coverity-tested\/.*/ - /^stable-.*/ +qemu-smoke-arm64-gcc: + stage: test + image: registry.gitlab.com/xen-project/xen/${CONTAINER} + variables: + CONTAINER: debian:unstable-arm64v8 + script: + - ./automation/scripts/qemu-smoke-arm64.sh 2>&1 | tee qemu-smoke-arm64.log + dependencies: + - debian-unstable-gcc-arm64 + artifacts: + paths: + - smoke.serial + - '*.log' + when: always + tags: + - arm64 + except: + - master + - smoke + - /^coverity-tested\/.*/ + - /^stable-.*/ + qemu-smoke-x86-64-gcc: stage: test image: registry.gitlab.com/xen-project/xen/${CONTAINER} diff --git a/automation/scripts/build b/automation/scripts/build index 0cd0f3971d..7038e5eb50 100755 --- a/automation/scripts/build +++ b/automation/scripts/build @@ -10,9 +10,9 @@ cc-ver() # random config or default config if [[ "${RANDCONFIG}" == "y" ]]; then - make -C xen KCONFIG_ALLCONFIG=tools/kconfig/allrandom.config randconfig + make -j$(nproc) -C xen KCONFIG_ALLCONFIG=tools/kconfig/allrandom.config randconfig else - make -C xen defconfig + make -j$(nproc) -C xen defconfig fi # build up our configure options @@ -45,7 +45,7 @@ make -j$(nproc) dist # Extract artifacts to avoid getting rewritten by customised builds cp xen/.config xen-config mkdir binaries -if [[ "${XEN_TARGET_ARCH}" == "x86_64" ]]; then +if [[ "${XEN_TARGET_ARCH}" != "x86_32" ]]; then cp xen/xen binaries/xen fi diff --git a/automation/scripts/qemu-smoke-arm64.sh b/automation/scripts/qemu-smoke-arm64.sh new file mode 100755 index 0000000000..1a0a98be6d --- /dev/null +++ b/automation/scripts/qemu-smoke-arm64.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -ex + +# Install QEMU +export DEBIAN_FRONTENT=noninteractive +apt-get -qy update +apt-get -qy install --no-install-recommends qemu-system-aarch64 \ + u-boot-qemu + +# XXX Silly workaround to get the following QEMU command to work +# QEMU looks for "efi-virtio.rom" even if it is unneeded +cp /usr/share/qemu/pvh.bin /usr/share/qemu/efi-virtio.rom +qemu-system-aarch64 \ + -machine virtualization=true \ + -cpu cortex-a57 -machine type=virt \ + -m 512 -display none \ + -machine dumpdtb=binaries/virt-gicv3.dtb + +rm -f smoke.serial +set +e +echo " booti 0x49000000 - 0x44000000" | timeout -k 1 30 qemu-system-aarch64 \ + -machine virtualization=true \ + -cpu cortex-a57 -machine type=virt \ + -m 512 -monitor none -serial stdio \ + -no-reboot \ + -device loader,file=binaries/virt-gicv3.dtb,force-raw=on,addr=0x44000000 \ + -device loader,file=binaries/xen,force-raw=on,addr=0x49000000 \ + -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin |& tee smoke.serial + +set -e +grep -q 'LOADING DOMAIN 0' smoke.serial || exit 1 +exit 0